/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package webapps.tools;

import java.io.IOException;
import javax.servlet.http.Cookie;

/**
 *
 * @author Adrien
 */
public class Tools {

    public static final int PAS_MESSAGE = 0, MESSAGE_ERREUR = 1;
    public static final int MESSAGE_SUCCES = 3;

    public static boolean estEntier(String chaine) {
        boolean temoin = false;
        try {
            Long.parseLong(chaine);
            temoin = true;
        } catch (Exception e) {

        }
        return temoin;
    }

    public static void addMessage(String message, int etat, javax.servlet.http.HttpServletResponse response) {
        Cookie cookie_message = new Cookie("message", message);
        Cookie cookie_etat = new Cookie("etat", Integer.toString(etat));
        response.addCookie(cookie_message);
        response.addCookie(cookie_etat);
    }

    public static void setMessage(String idmessage, int etat, javax.servlet.http.HttpServletRequest request,String[] messages) {
        if (etat != Tools.PAS_MESSAGE) {
            if (Tools.estEntier(idmessage)) 
            {
                int numMessage = Integer.parseInt(idmessage);
                if (0 <= numMessage && numMessage < messages.length)
                {
                    request.setAttribute("etat", etat);
                    request.setAttribute("message", messages[numMessage]);
                }
            }
        }
    }

    public static Message getMessage(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) {
        Message unmessage = null;
        Cookie[] cookies = request.getCookies();
        String message = "";
        int etat = Tools.PAS_MESSAGE;
        boolean trouver_etat = false;
        if (cookies != null) {
            for (int cpt = 0; cpt < cookies.length; cpt++) {
                if (cookies[cpt].getName().equals("message")) {
                    message = cookies[cpt].getValue();
                    cookies[cpt].setMaxAge(0);
                    response.addCookie(cookies[cpt]);
                } else if (cookies[cpt].getName().equals("etat") && Tools.estEntier(cookies[cpt].getValue())) {
                    etat = Integer.parseInt(cookies[cpt].getValue());
                    cookies[cpt].setMaxAge(0);
                    response.addCookie(cookies[cpt]);
                    trouver_etat = true;
                } else if (!message.equals("") && trouver_etat) {
                    unmessage = new Message(message, etat);
                    return unmessage;
                } else {
                    cpt++;
                }
            }
        }
        return null;
    }

    public static boolean estFlottant(String chaine) {
        boolean temoin = false;
        try {
            Float.parseFloat(chaine);
            temoin = true;
        } catch (Exception e) {

        }
        return temoin;
    }

    /**
     * Déprécié car cette fonction existe dans Integer
     *
     * @param a
     * @param b
     * @return
     * @deprecated
     */
    @Deprecated
    public static int max(int a, int b) {
        return (a < b) ? b : a;
    }

    /**
     * Dépréciée car cette fonction existe déjà dans Integer
     *
     * @param a
     * @param b
     * @return
     * @deprecated
     */
    @Deprecated
    public static int min(int a, int b) {
        return (a < b) ? a : b;
    }

    //Deprécié car je laisse à la charge du contrôleur de charger le message
    @Deprecated
    public static void displayMessage(javax.servlet.http.HttpServletRequest request, javax.servlet.jsp.JspWriter out, String[] messages) throws IOException {
        Integer inEtat = (Integer) request.getAttribute("etat");
        String szMessage = (String) request.getAttribute("message");
        if (inEtat != null && szMessage != null && Tools.estEntier(szMessage)) {
            int num_message = Integer.parseInt(szMessage);

            //Cas ou num_message est plus grand
            if (0 <= num_message && num_message < messages.length) {
                String contenuMessage = messages[num_message];
                String szEtat = "alert-success";
                if (inEtat.equals(Tools.MESSAGE_ERREUR)) {
                    szEtat = "alert-danger";
                }

                out.println("<div class=\"alert " + szEtat + "\" role=\"alert\">" + contenuMessage + "</div>");
            }
        }
    }

    public static void displayMessage(javax.servlet.http.HttpServletRequest request, javax.servlet.jsp.JspWriter out) throws IOException {
        Integer inEtat = (Integer) request.getAttribute("etat");
        String szMessage = (String) request.getAttribute("message");
        if (inEtat != null && szMessage != null) {

            String szEtat = "alert-success";
            if (inEtat.equals(Tools.MESSAGE_ERREUR)) {
                szEtat = "alert-danger";
            }

            out.println("<div class=\"alert " + szEtat + "\" role=\"alert\">" + szMessage + "</div>");
        }
    }
    
    /**
     * Cette méthode construit une url absolue à partir d'une uri relative
     *  (en fait il rajoute la base uri à l'url)
     * @param uri
     * @return une url absolue
     */
    public static String create_uri(String uri)
    {
        return Config.base_uri + uri;
    }
}
